//package com.example.rabbitdemo.message;
//
//import org.springframework.amqp.core.BindingBuilder;
//import org.springframework.amqp.core.DirectExchange;
//import org.springframework.amqp.core.QueueBuilder;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
//import java.util.HashMap;
//import java.util.Map;
//
//@Configuration
//public class RabbitDLXConfig {
//
//    // 1. 定义业务（正常）交换机和队列
//    @Bean
//    public DirectExchange businessExchange() {
//        return new DirectExchange("exchange.business", true, false);
//    }
//
//    @Bean
//    public Queue businessQueue() {
//        Map<String, Object> args = new HashMap<>();
//        // 关键参数：指定死信交换机
//        args.put("x-dead-letter-exchange", "exchange.dlx");
//        // 可选：指定发送到死信交换机时使用的路由键
//        args.put("x-dead-letter-routing-key", "dead.letter");
//        // 可以同时设置队列的其他属性，如消息TTL、队列最大长度
//        // args.put("x-message-ttl", 60000);
//        // args.put("x-max-length", 1000);
//
//        return QueueBuilder.durable("queue.business").withArguments(args).build();
//    }
//
//    @Bean
//    public Binding businessBinding() {
//        return BindingBuilder.bind(businessQueue()).to(businessExchange()).with("business.key");
//    }
//
//    // 2. 定义死信交换机和死信队列
//    @Bean
//    public DirectExchange dlxExchange() {
//        return new DirectExchange("exchange.dlx", true, false);
//    }
//
//    @Bean
//    public Queue dlxQueue() {
//        return QueueBuilder.durable("queue.dlx").build(); // 死信队列也应持久化
//    }
//
//    @Bean
//    public Binding dlxBinding() {
//        return BindingBuilder.bind(dlxQueue()).to(dlxExchange()).with("dead.letter");
//    }
//}